perm filename NOTES.F4[P11,LCS] blob sn#595816 filedate 1981-06-19 generic text, type T, neo UTF8
00100	C**** NOTWRT, STEM
00200	C**** ORDNT, LDGLN, TAILS, DOTIT, SAVEM, GETEM ****
00300	C***** ACCI, DIAMND, RST ***********
00400	C*** MRK, YPOS, R4SET, MRKZ, TENUTO, MRKX ***************
00500	
00600		SUBROUTINE NOTWRT
00700		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
00800		COMMON /STF/RSTFAC(0/7),RSTJ2 /WIDTH/WID1,WID2,WIDX
00900		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
01000		COMMON /POSI/STFF(0/7),JJ2,POS
01100	C  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
01200		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
01300		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ,
01400		1 PUNCT,JY,RJ
01500		EQUIVALENCE (J4,JQ(2)),(J5,JQ(3)),(R4,RJQ(2)),(J9,JQ(7))
01600		1,(R6,RJQ(4)),(J7,JQ(5)),(J10,JQ(8)),(J11,JQ(9)),(J6,JQ(4))
01700	 	1,(R3,RJQ(1)),(RX4,JQ(18)),(R12,RJQ(10)),(RLVL,RJQ(19))
01800		1,(R7,RJQ(5))
01900		DATA WID1/14.54/,WID2/16.2/
02000	
02100	C  NOTES****
02200		RMINI=RSTJ2
02300		RST7=7.*RMINI
02400		IF(JA.EQ.1)GO TO 11
02500		IF(JA.NE.9)GO TO 90
02600		CALL MRKX
02700		RETURN
02800	90	CALL RST
02900	C GO MAKE A REST
03000		RETURN
03100	11	JSTEM=J5/10
03200		JWHOLE=IABS(J6)
03300		IF(JWHOLE.EQ.30)JWHOLE=0
03400	C   30 IS USED IN NOTBMS & RHYTH.
03500		JACC=MOD(J5,10)
03600	C  THE ACCIDENTAL NUM.
03700		JTAIL=MOD(J7,10)
03800	C  HOW MANY TAILS
03900		JDOT=J7/10
04000	C HOW MANY DOTS
04100		NTYPE=(IABS(J4)+20)/100
04200	C NOTE TYPE CODE NUMBER (0,1,2,3,4,5)
04300		RLVL=AMOD(R4,100.)
04400	C TRUE LEVEL OF NOTE.  USED IN ACCI.
04500		IF(J10.LE.0)GO TO 9
04600		POS=STFF(J2-3+2*J10)
04700	C  FOR PUTTING NOTES ON STAFF ABOVE OR BELOW. J10=1=DOWN, =2=UP
04800		CALL CENTX
04900	9	MKS=J11
05000	C ANY MARKS?
05100		JJ4=RLVL
05200		RJAC=R3
05300	C  SAVE HOR. POS. FOR OTHER ROUTINES
05400		IF(R12.NE.0)RMINI=RMINI*R12
05500	C  R12 HAS NEW, MASTER SIZE FACTOR
05600		GO TO (1,2,3,3,5,6)NTYPE+1
05700		GO TO 6
05800	C ASSUME SPECIAL NOTES IF >5
05900	1	CALL ORDNT
06000	7	IF(JJ4.LT.2)GO TO 8
06100		IF(JJ4.LT.13)GO TO 10
06200	8	IF(J9.NE.-1)CALL LDGLN
06300	10	IF(JDOT.EQ.0)GO TO 12
06400		RJX=RJAC+(22.+AMOD(R7,1.0)*59.6)*RMINI
06500	C RJAC IS ORIGINAL R3  (RESTS ALSO USE DOTIT)
06600		CALL DOTIT
06700	12	IF(JACC.NE.0)CALL ACCI
06800		IF(JSTEM.GT.0)CALL STEM
06900		IF(JTAIL.NE.0)CALL TAILS
07000		IF(MKS.NE.0)CALL MRK
07100		RETURN
07200	2	RMINI=RMINI*.6
07300	C FOR MINI (GRACE) NOTES
07400		GO TO 1
07500	3	CALL DIAMND
07600		GO TO 7
07700	5	RB=R6*RST7
07800	C USE R6 TO ADJUST SOURCE POS. OF HEADLESS NOTES (WAS R12)
07900		IF(JSTEM.EQ.2)RB=-RB
08000		J6=0
08100		GO TO 7
08200	6	CALL EXTRA
08300	C  GO USE SPECIAL NOTE PACKAGE
08400		END
08500	
08600		SUBROUTINE STEM
08700		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM
08800		COMMON /STF/RSTFAC(0/7),RSTJ2 /WIDTH/WID1,WID2,WIDX
08900		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
09000	C  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
09100		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
09200		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ,PUNCT,JY,RJ
09300		EQUIVALENCE (J5,JQ(3)),(J7,JQ(5)),(J10,JQ(8)),
09400	 	1(J6,JQ(4)),(R5,RJQ(3)) ,(R8,RJQ(6)),(R3,RJQ(1))
09500		RG=(JTAIL-1)*14
09600		IF(RG.LT.0)RG=0
09700	C 999 IS STANDARD (0) STEM LENGTH.
09800		IF(R8.NE.999.)GO TO 1751
09900		R8=0
10000		RH=0
10100		GO TO 2751
10200	1751	IF(R8.LT.999.)GO TO 751
10300		R8=R8-1000.
10400		J10=-1 
10500	C   +1000  PUTS SLASH ON NOTE STEM
10600	751	RH=R8*RST7
10700	2751	IF(JSTEM.NE.2)GO TO 1280
10800	C   STEM EXTENSIONS ARE BY NOTE #S
10900		RJX=R3
11000	C   FOR STEM DOWN (=2)
11100		RG=-RG-48.
11200		RH=-RH
11300	C RB IS SOURCE POS. OF STEM.  SET UP IN VARIOUS NOTE ROUTINES.
11400		 RB=-RB
11500	C  FOR TILT OF ORDINARY NOTES (NOT X OR DIAMOND)
11600		GO TO 129
11700	C   NEXT IS FOR STEM UP.
11800	1280	RJX=WIDX
11900	CC	IF(J6.LT.0)RJX=WID2
12000	C IF(J6.LT.0)GET SPACE FOR HALF NOTE
12100	2322	RJX=RJX*RMINI+R3
12200		 RG=RG+48.
12300	129	RZ=CENTR+RH+RG*RMINI
12400		RB=RB+CENTR
12500		CALL LINX(RJX,RB,RJX,RZ)
12600	C MOVES CENTR UP OR DOWN FOR NEXT TAIL
12700		END
12800		SUBROUTINE ORDNT
12900		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
13000	CC	COMMON/DAT/RACNT(69),RDOT(17),JXAC(7),RNOTE(22)
13100		COMMON/DAT/RAC(69),RDT(17),XAC(7),RNTE(22),RACCI(22),NACCI(3)
13200		COMMON /STF/RSTFAC(0/7),RSTJ2 /WIDTH/WID1,WID2,WIDX
13300		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
13400		COMMON/PLTR/IPLT,RHT,DIS /POSI/STFF(0/7),JJ2,POS
13500	C  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
13600		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
13700		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
13800		EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R4,RJQ(2))
13900		1,(R6,RJQ(4)),(J7,JQ(5)),(J6,JQ(4)),(R5,RJQ(3))
14000	 	1,(R8,RJQ(6)),(R7,RJQ(5)),(R3,RJQ(1)),(RLVL,RJQ(19))
14100		RB=RMINI+RMINI
14200	C RB SETS SOURCE FOR STEM
14300		WIDX=WID1
14400	C GET STANDARD NOTE WIDTH
14500		IF(J6.LT.0)WIDX=WID2
14600	C P6<0 = WHITE NOTE
14700	C GETS WIDTH OF NOTE DISPLACEMENT
14800		RQ=WIDX
14900		IF(JWHOLE.LT.10)GO TO 1
15000	C SHIFT NOTE TO LEFT OR RIGHT OF STEM (R6=20,10)
15100	C P6 FOR HOMING TO RIGHT(10) OR LEFT(20) OF STEM(10=UP, 20=DOWN)
15200		IF(JWHOLE.EQ.20)RQ=-RQ
15300		R3=R3+RQ*RMINI
15400	1	IF(J6.GE.0)GO TO 125
15500		KL=1
15600		RG=7.  
15700	C  FOR WHITE NOTES ON DPY.
15800		J7=MOD(J7,10)
15900		IF(J7.EQ.0)GO TO 12122
16000		IF(JTAIL.NE.0)JSTEM=-JSTEM
16100	C SAVE NEG. STEM DIRECTION FOR MARKS ROUTINE
16200		JTAIL=0
16300		IF(IPLT.LT.0)GO TO 2121
16400		IF(J7.NE.2)GO TO 1253
16500	C NO DOTTED DOUBLE WHOLE NOTE??
16600		RQ=POS-18.*RSTJ2+RST7*(RLVL-1.)
16700	CC	RQ=POS-18.*RSTJ2+RST7*(R4-1.)
16800		CALL LINX(R3,RQ,R3,RQ+RST7+RST7)
16900	C PUT IN LINE TO SHOW DBL WHOLE ON SCREEN (P7=2)
17000	C SET STEM SHIFT FLAG(J6) FOR ORD. WIDTH NOTES.
17100	12122	IF(IPLT.GE.0)GO TO 1253
17200	2121	J5=15+J7
17300	C IF J7=1, THEN WHOLE NOTE SHAPE INSTEAD OF HALF. (J7=2=DBL. WHL.)
17400	12121	RG=RSTJ2
17500	C   RG  FOR NOW ;FIX THIS SOME DAY↓↓  SEE 1342+1!
17600		JX4=J4
17700		RQ=R7
17800		 CALL DRWNT 
17900	C SAVE IT FOR DOTS  
18000	C DO I NEED TO NOW?
18100		R7=RQ
18200	CC	R4=RX4
18300		J4=JX4
18400	C   GET 'EM BACK
18500		RSTJ2=RG
18600	C DRAWS GOOD NOTES ON PLOTTER, NOT ON DPY
18700		RETURN
18800	1251	CALL NOIR(RMINI)
18900	C   FOR QUARTER NOTES ON PLOTTER.
19000		RETURN
19100	125	IF(IPLT.LT.0)GO TO 1251
19200		RG=22.
19300		KL=17
19400	1253	CALL RDRAW(KL,RG,RNTE,RMINI,R3,CENTR,RMINI)
19500		END
19600	
19700	C*********  FOR LEDGER LINES  *********
19800		SUBROUTINE LDGLN
19900		COMMON /STF/RSTFAC(0/7),RSTJ2
20000		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/POSI/STFF(0/7),JJ2,POS
20100	C  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
20200		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
20300		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
20400		EQUIVALENCE (J4,JQ(2)),(J9,JQ(7)) ,(R3,RJQ(1)),(J6,JQ(4))
20500		1,(J12,JQ(10)),(RLVL,RJQ(19))
20600		J4=RLVL
20700		IF(J4.LT.2)GO TO 1
20800		J12=(J4+1)/2-6
20900	C J12 FOR LEDGER LINES ABOVE STAFF
21000		GO TO 2
21100	1	J12=-((3-J4)/2)
21200	C BELOW STAFF
21300	2	RJW=R3-7.*RMINI
21400		RZ=R3+20.*RMINI
21500		IF(J12.LT.0)GO TO 71
21600		JX=J12
21700		JRX=13
21800		GO TO 711
21900	71	JRX=J12*2+3
22000		JX=-J12
22100	711	RX=POS-18*RSTJ2+RST7*JRX
22200		IF(J6.LT.0)RZ=RZ+2*RMINI
22300	126	CALL LINX(RJW,RX,RZ,RX)
22400	1126	IF(JX.EQ.1)RETURN
22500		RX=RX+RSTJ2*14.
22600		JX=JX-1
22700		GO TO 126
22800		END
22900	
23000		SUBROUTINE TAILS
23100		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
23200		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /STF/RSTFAC(0/7),RSTJ2
23300		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
23400		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
23500		EQUIVALENCE (R4,RJQ(2)),(R8,RJQ(6)),(J10,JQ(8)),(RLVL,RJQ(19))
23600		R=RMINI/RSTJ2
23700		RJW=2.*R
23800		R4=RLVL
23900		RA=1.
24000	C   FOR VERT. SPACING OF MULTIPLE TAILS
24100		IF(JSTEM.NE.2)GO TO 1127
24200		R=-2.7-R8-R
24300		RJW=-RJW
24400		GO TO 2
24500	
24600	1127	R=R8-3.+R
24700	C WAS  -3.7 OR -2 BECAUSE ORIGINAL DRAWING OF TAIL WAS OFF.
24800		RA=-RA
24900	2	R4=R4+R
25000	C  R4 IS USED IN SUBR. TAIL   - R8 IS STEM EXTENSION.
25100		R=R8
25200		R8=0
25300	127	CALL TAIL
25400		JTAIL=JTAIL-1
25500		IF(JTAIL.EQ.0)GO TO 1
25600		R=R+RJW
25700	C RR8 SAVES INFO FOR MRK ROUTINE.
25800		R4=R4+RJW
25900		 GO TO 127 
26000	
26100	1	R8=R
26200	CC	R4=R4+2.
26300		IF(J10.GE.0)RETURN
26400	C RJX,RZ MUST BE SAVED PROPERLY AFTER USE IN 'STEM'
26500		RJY=-19.
26600		RH=-RSTJ2*4.
26700		IF(JSTEM.EQ.1)GO TO 1327
26800	C	IF(RA.LT.0)GO TO 1327
26900	C   NEXT IS FOR STEM DOWN SLASH
27000		RJY=23.
27100		RH=RST7
27200	
27300	1327	RJX=RJX-RST7
27400		RJY=RZ+RJY*RSTJ2
27500		RZ=RZ+RH
27600		CALL LINX(RJX,RJY,RJX+17.*RSTJ2,RZ)
27700	C FOR SLASH ON GRACE NOTE TAIL
27800		END
27900	
28000	
28100		SUBROUTINE DOTIT
28200		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
28300		1 /DAT/RAC(69),RDOT(17) /STF/RSF(8),RSTJ2 /WIDTH/WID1,WID2,WIDX
28400		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /PLTR/IPLT,RHT,DIS
28500		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
28600		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
28700		EQUIVALENCE (J4,JQ(2)),(J7,JQ(5)),(R3,RJQ(1)),(R7,RJQ(5))
28800	
28900	C NEXT FOR NOTES DISPLACED TO LEFT OR RIGHT OF STEM
29000	C  MOVES DOT TO RIGHT (THIS SHOULD BE WIDX - BUT OLD FILES WOULD BE WRONG.)
29100	C**** USE WIDX IN FRANCE?
29200		IF(JWHOLE.EQ.20)GO TO 2
29300	     	IF(JWHOLE.EQ.10.OR.J7.GT.100)RJX=RJX+WID1
29400	
29500	2     RJY=CENTR+RSTJ2
29600	      IF(MOD(J4,2).EQ.0)GO TO 108
29700	C ON A LINE OR A SPACE?
29800	      RX=RST7
29900	      IF(J7.GT.100)RX=-RX
30000	C  ADD 100 TO R7 FOR DOTS BELOW! NOTE
30100	CC    IF(JWHOLE.GE.20.OR.J7.GT.100)RX=-RX
30200	C PERHAPS SHOULD ALWAYS PUT DOT DOWN IF NOTE IS TO LEFT OF STEM??
30300	      RJY=RJY+RX
30400	
30500	108      RG=9.
30600		IF(IPLT.LT.0)RG=17.
30700	C  DOESN'T FILL DOT ON DPY
30800		IF(JDOT.GT.10)JDOT=MOD(JDOT,10)
30900		R=10.*RMINI
31000	
31100	107   CALL RDRAW(1,RG,RDOT,RMINI,RJX,RJY,RMINI)
31200		JDOT=JDOT-1
31300		IF(JDOT.EQ.0)RETURN
31400		RJX=RJX+R
31500	CC	RJX=RJX+RSTJ2*10.
31600		GO TO 107
31700		END
31800	
31900		SUBROUTINE SAVEM
32000		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
32100		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
32200		1 RB,RJW,RZ,JX,RG,KL,RJAC /SAV/JJ9,RCEN,RR4,RR6,RR7,RR8,RR9
32300		EQUIVALENCE (R3,RJQ(1)),(R4,RJQ(2)),(RLVL,RJQ(19)),(R6,RJQ(4))
32400		1,(R7,RJQ(5)),(R8,RJQ(6)),(R9,RJQ(7)),(J9,JQ(7))
32500		RCEN=CENTR
32600		RR4=RLVL
32700		RR6=R6
32800		RR7=R7
32900		RR8=R8
33000		RR9=R9
33100		JJ9=J9
33200		END 
33300	
33400		SUBROUTINE GETEM
33500		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
33600		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
33700		1 RB,RJW,RZ,JX,RG,KL,RJAC /SAV/JJ9,RCEN,RR4,RR6,RR7,RR8,RR9
33800		EQUIVALENCE (R3,RJQ(1)),(R4,RJQ(2)),(RLVL,RJQ(19)),(R6,RJQ(4))
33900		1,(R7,RJQ(5)),(R8,RJQ(6)),(R9,RJQ(7)),(J9,JQ(7))
34000		CENTR=RCEN
34100		R3=RJAC
34200		RLVL=RR4
34300		R6=RR6
34400		R7=RR7
34500		R8=RR8
34600		R9=RR9
34700		J9=JJ9
34800		END
34900		SUBROUTINE ACCI
35000		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
35100		COMMON/DAT/RAC(69),RDT(17),XAC(7),RNTE(22),RACCI(22),NACCI(3)
35200		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /STF/RSTFAC(0/7),RSTJ2
35300		COMMON /FONT/JFONT /PLTR/IPLT,RHT /POSI/STFF(0/7),JJ2,POS
35400		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY
35500		EQUIVALENCE (R3,RJQ(1)),(J5,JQ(3)),(R5,RJQ(3))
35600		1,(R4,RJQ(2)),(R6,RJQ(4))
35660	CC	1,(R4,RJQ(2)),(RLVL,RJQ(19)),(R6,RJQ(4))
35700	
35800		RX=RMINI
35900		RR3=R3
36000		RR5=AMOD(R5,1.0)
36100		IF(RR5.NE.0)RR3=RR3-RR5*59.6*RMINI
36200	C  TO SPACE OUT ACCIDS.
36300		IF(JACC.GT.3)GO TO 3121
36400	C  DBL FLT(4) AND DBL SHRP(5)  ALWAYS USE 'DRAW' ROUTINE.
36500	C ADD (#) ETC.
36600		IF(IPLT.LT.0)GO TO 3121
36700		IF(JFONT.NE.0)GO TO 3121
36800		NX=NACCI(JACC)
36900		CALL RDRAW(NX+1,RACCI(NX),RACCI,RMINI,RR3,CENTR,RMINI)
37000		RETURN
37100	C  TO DRAW GOOD ACCIS ON PLOTTER - NOT ON DPY.(IN CLEF4.DMD)
37200	3121	RA=R3
37300		R3=RR3
37400	C	RJZ=AMOD(R4,100.0)
37500		J5=9
37600		IF(JACC.LT.6)GO TO 1
37700	C NEXT FOR (#) ETC.
37800		R6=2.
37900		POS=POS+21.*RMINI
38000		RMINI=RMINI*2.0
38100	C	R3=R3-3.*RMINI
38200		J5=99
38300	1	J5=J5+JACC
38400		CALL DRWNT
38500		R3=RA
38600		RMINI=RX
38700		END
     

00100		SUBROUTINE DIAMND
00200		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
00300		COMMON /WIDTH/WID1,WID2,WIDX
00400		COMMON/DAT/RACNT(69),RDOT(17),JXAC(7),RNOTE(22)
00500		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /PLTR/IPLT,RHT,DIS,XDIS
00600		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
00700		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
00800		EQUIVALENCE (R3,RJQ(1)),(J5,JQ(3)),(R4,RJQ(2)),(R6,RJQ(4))
00900		1,(R7,RJQ(5)),(RX4,JQ(18)),(ISTEM,JQ(20)),(J7,JQ(5)),(J6,JQ(4))
01000	C DIAMOND NTS=180→279
01100		WIDX=WID1
01200	C SET NOTE WIDTH FOR STEM ROUTINE
01300		 KL=8
01400		RG=12.0
01500	C  FOR DIAMOND NOTES.
01600		RB=0
01700		IF(NTYPE.NE.3)GO TO 3
01800		KL=13
01900		RG=16.
02000		RB=7.*RMINI
02100	C THESE FOR X-NOTE   =280→379
02200	3	J4=R4
02300		RJZ=R4
02400		RX4=R4
02500		IF(J6.GE.0)GO TO 1
02600	C NOW FOR BLACK DIAMOND (J6=-1)
02700		J6=0
02800		J5=7
02900		RQ=R7
03000		RG=CENTR
03100	2	CALL DRWNT
03200		R7=RQ
03300		R4=RX4
03400		R6=0
03500		CENTR=RG
03600		RETURN
03700	
03800	1	JT=1
03900	C FOR DOUBLE-THICK X NOTES, HARMONICS.
04000		RH=R3
04100	1253	CALL RDRAW(KL,RG,RNOTE,RMINI,RH,CENTR,RMINI)
04200		IF(JT.LT.0)RETURN
04300		IF(IPLT.GE.0)RETURN
04400		RH=RH-1.0
04500		JT=JT-1
04600		GO TO 1253
04700		END
     

00100		SUBROUTINE RST
00200		COMMON /INTGRS/JACC,JTAIL,JDOT
00300		COMMON R2,JA,CNTR,J2,R3,R4,R5,R6,R7,R8,R9,RJR(12),RX3
00400		1,J3,J4,J5,J6,J7,J8,J9 /PTR/KWDS(1)
00500		1/LIMIT/LM,ITEM,LH,I,IX /STF/RF(8),RSTJ2 /XRN/RN(1)
00600	      COMMON/PLTR/IPLT,RHT,DIS,XDIS /POSI/STFF(0/7),JJ2,POS
00700	C  ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
00800	      COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
00900	     1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,J5X,RXX,JJJ
01000	 
01100	      IF(IABS(J4).LT.480)GO TO 22
01200		CALL EXTRA
01300	C  P4+500= USER-ADDED RESTS
01400	      RETURN
01500	22	IF(J6.LT.0)RETURN
01600	C J6=-1= INVIS. RESTS NEEDED IN 'PARTS' PROGRAM
01700		IF(R9.EQ.0)GO TO 302
01800		IF(R9.GT.0)GO TO 2
01900	
02000		J9=0
02100	C USE R9 FOR CENTERING. ORIG. P3 IS BASIC POS.
02200	C J9=0 NEEDED FOR CENTERED ./. REPEAT SIGN.**********
02300	C IF R9<0 CENTERING WILL BE DONE IN RSTCEN
02400	C FOR CENTERING WHOLE RESTS
02500		X=1000
02600	C FINAL POSITION WILL BE 1/2 WAY FROM 1ST NOTE POS. TO BARLINE.
02700		DO 1 K=1,ITEM
02800		L=KWDS(K)
02900		IF(RN(L+1).NE.4.)GO TO 1
03000	CC	IF(CODN(K,L).NE.4)GO TO 1
03100		IF(RN(L).GT.2)GO TO 1
03200	C FIND ONLY BARLINES (WDCNT=1)  (PUT ORD. BAR OVER DBL BAR TO MAKE THIS WORK)
03300		A=RN(L+3)
03400		IF(A.LT.X.AND.A.GT.RX3)X=A
03500	1	CONTINUE
03600		IF(X.NE.1000)R9=RX3+(X-RX3)/2.-3.0*RSTJ2
03700	C RX3 HAS IMPORTANT POS. INFO FOR NTS.
03800		IF(IPLT.GT.0)GO TO 2
03900		K=I
04000		IF(IPLT.NE.0)K=IX
04100	C PUT R9 INTO NEW PLACE IN XRN
04200		RN(K-1)=R9
04300	2	R3=RHORZ(R9)
04400		R9=0
04500	C R9=0  SO LEDGER LINE FEATURE DOESN'T GET CONFUSED.
04600	
04700	302   IF(R8.EQ.-3)R8=0
04800		 IF(R8.NE.0.AND.J5.NE.-3)J5=-2
04900	C R8=-4 OR -5 MAKES REPEAT BAR SIGN
05000	C R8=-3 IS FOR 'PAGE' PROGRAM
05100	C SO THAT REST SHAPES ARE NOT CHANGED IN FULL BAR REST.
05200	C R8 PUTS NUM OVER WHL RST ONLY. R5=-3 PUTS DBL WHL UNDER REST.
05300	      IF(J5.GT.1)R4=R4-2.
05400	      R7=R6*10.
05500	C  FOR DOTS
05600	      IF(J5.GE.2)R3=R3-3.0*RSTJ2
05700	C  SHIFTS 1/16 AND SMALLER RESTS .5 TO LEFT
05800	202	CALL REST
05900	      IF(J5.GT.1)GO TO 200
06000	      IF(R7.EQ.0)RETURN
06100	201   RA=20.7
06200	      R6=0
06300	      IF(J5.LT.0)RA=25.7
06400	      RJX=R3+RA*RMINI
06500	C RJX HAS HOROZ. POS. FOR DOTIT ROUTINE.
06600	      R4=8.+R4
06700	      J5=7
06800	C P6=1 THE REST IS DOTTED
06900		JDOT=J6
07000		CALL CENTX
07100		CALL DOTIT
07200		RETURN
07300	200   J5=J5-1
07400	C  FOR MULTIPLE TAILS ON 16TH REST, ETC.
07500	      R4=R4+2.
07600	      CALL RJBX(4.3)
07700	      GO TO 202
07800		END
07900	C****** MARKS ON NOTES **********
08000	C 4=WDG, 5=ACCNT, 7 STACC, 9=TEN, 11=DNBOW, 12=UPBOW, 13=HARM, 14=+
08100	C 15=THESIS, 16=ARSIS, 17=MORD, 18= INVMORD, 20=TR, 21=Tb, 22=T#, 23=TNAT
08200	C 25=HVYWDG, 26=FERM, 27=TEN-STACC, 28=WDG-STACC, 29=ACCNT-STACC
08300	C 30-35=FINGERING, 21-23=MUSICA FICTA
08400		SUBROUTINE MRK
08500		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
08600		COMMON/DAT/RACNT(69),RDOT(17),NXAC(7)
08700		COMMON R2,JA,CENTR,J2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,
08800		1 RRR(7),RLVL,R20,JQ(20) /STF/RSTFAC(0/7),RSTJ2
08900		COMMON /FONT/JFONT /PLTR/IPLT,RHT,DIS,XDIS /POSI/STFF(0/7),JJ2,POS
09000		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
09100		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
09200		EQUIVALENCE (J5,JQ(3)),(J11,JQ(9)),(J9,JQ(7))
09300		1,(J3,JQ(1)),(RX4,JQ(18)),(ISTEM,JQ(20)),(J7,JQ(5))
09400	
09500		JSTEM=IABS(JSTEM)
09600		MRK=J11/100
09700	C GET MARK CLOSEST TO NOTE HEAD.  (LEFT 2 DIGITS)
09800		J5=J11-MRK*100
09900		R11=10.*(R11-J11)
10000		R13=R11
10100		IF(R11.EQ.0)GO TO 100
10200		IF(RSTJ2.NE.RMINI)R11=R11*RMINI/RSTJ2
10300	C***** STEM DIRECTION?????******** (MATTERS FOR J11=4,5,7,9, OR -J11
10400	C SHIFT AWAY FROM NORMAL VERTICAL POS.  (.15 SHIFTS UP 1.5 STEPS)
10500	100	RR4=R4
10600		R4=RLVL
10700		R3=RJAC
10800		J4=R4
10900		IF(J5.GT.9)GO TO 10
11000		GO TO(1,1,1,4,5,26,7,5,9)J5
11100	10	IF(J5.GT.19)GO TO 200
11200		GO TO(11,11,11,11,11,11,17,17)J5-10
11300	200	IF(J5.GT.29)GO TO 30
11400		GO TO(20,20,20,20,5,25,26,27,28,29)J5-19
11500	
11600	C**** FICTA
11700	1	J5=J5+9
11800		CALL SAVEM
11900		R7=0
12000		R6=.42
12100	C  R6 (SIZE) COULD BE CHANGED ****
12200		IF(NTYPE.EQ.1)R6=.26
12300		CALL R4SET(.8,5.8,10.5)
12400	CC	R3=R3+15.*RSTJ2
12500		R3=R3+15.*RMINI
12600		R8=0
12700		J9=0
12800		CALL CLEFS
12900	C  29 STILL OPEN FOR MARKS IN SUBR. FERMTA
13000		GO TO 31
13100	
13200	C**** WEDGE
13300	4	JX=5
13400		RX=R3+.5*RSTJ2
13500	C SHIFT A LITTLE TO RIGHT
13600	41	CALL YPOS(14.,RY)
13700		RA=RMINI
13800		RB=RA
13900		IF(JSTEM.EQ.1)RA=-RA
14000	40	CALL MRKZ(JX,RY)
14100		GO TO 300
14200	
14300	C**** ACCENT
14400	5	JX=1
14500		RX=R3
14600		GO TO 41
14700	
14800	C**** STACCATO
14900	7	RX=6.7
15000		RX=R3+RX*RMINI
15100	C PUSH DOT TO RIGHT
15200		RG=9.
15300		IF(IPLT.LT.0)RG=17.
15400	C DOESN'T FILL DOT ON DPY
15500	9	RB=14.
15600		IF(JSTEM.EQ.1)GO TO 70
15700		IF(J4.GT.9)GO TO 73
15800		GO TO 71
15900	70	IF(J4.LT.5)GO TO 73
16000	71	IF(MOD(J4,2).NE.0)RB=21.
16100	73	CALL YPOS(RB,RY)
16200		IF(J5.EQ.9)GO TO 90
16300	77	CALL RDRAW(1,RG,RDOT,RMINI,RX,RY+RSTJ2,RMINI)
16400		GO TO 300
16500	
16600	C**** TENUTO (DASH)   (STARTS ABOVE)
16700	90	CALL TENUTO(RY)
16800		GO TO 300  
16900	
17000	C*** UPBOW, ETC.
17100	11	RA=RMINI
17200		RB=RA
17300		RX=R3
17400		CALL R4SET(3.,8.,12.5)
17500		CALL CENTX
17600		CALL MRKZ(NXAC(J5-10),CENTR)
17700		GO TO 300
17800	
17900	C*** 17=MORDENT  18=INVERTED MORDENT
18000	17	RINV=J5
18100		CALL R4SET(3.,8.,12.5)
18200		GO TO 260
18300	
18400	C*** TRILL
18500	20	CALL R4SET(3.,8.,12.5)
18600		CALL SAVEM
18700		JA=7
18800		R5=0
18900		R7=1.
19000		J7=1
19100		R8=J5-20
19200	C R8 HAS THE ACCIDENTAL TO PUT OVER TR.
19300		CALL ALPHA
19400		GO TO 31
19500	C*** HEAVY WEDGE
19600	25	CALL SAVEM
19700		RINV=1.0
19800		R7=0
19900		RX4=RLVL
20000		ISTEM=JSTEM
20100		CALL FERMTA
20200		GO TO 31
20300		
20400	C*** FERMATA
20500	26	CALL SAVEM
20600		RINV=1.
20700		CALL R4SET(2.,7.,11.75)
20800	260	CALL CENTX
20900		CALL FERMTA
21000		GO TO 31
21100	
21200	C*** TENUTO-STACC. (DOT CLOSEST TO NOTE HEAD)
21300	27	MRK=-9
21400	270	J5=0
21500		GO TO 7
21600	C*** WEDGE-STACC.
21700	28	MRK=-4
21800		GO TO 270
21900	C*** ACCENT-STACC.
22000	29	MRK=-5
22100		GO TO 270
22200	
22300	C*** FINGERING
22400	30	R5=J5-30
22500	C GET THE 1 DIGIT NUM.
22600	C  PRINTS ONLY NUMS 0→5 AS FINGERINGS OVER NOTES.
22700		CALL SAVEM
22800		R6=.7
22900	C  SIZE OF NUM.
23000		RX=6.
23100		IF(JSTEM.EQ.1)RX=8.
23200	C STEM UP, THEN SHIFT A LITTLE TO RIGHT
23300		J3=R3+RX*RMINI
23400		R7=0
23500		R8=0
23600		R9=0
23700		RA=2.5
23800		IF(JSTEM.EQ.1)RA=-4.
23900		R4=R4+RA 
24000	C HGT OF NUM.
24100		CALL MAKNUM(R5)
24200	C ADD HERE FOR NUMS WITH ACCENTS, ETC.
24300	
24400	31	CALL GETEM
24500	300	IF(MRK.EQ.0)RETURN
24600		IF(MRK.GT.0)GO TO 301
24700	C WILL ONLY DO  CERTAIN COMBINATIONS OF MARKS
24800	C  THIS FEATURE NEEDS MORE WORK
24900		MRK=-MRK
25000	C ACCENT,DASH,WEDGE OVER STACC.
25100		IF(MRK.EQ.9)GO TO 304
25200	C JUMP FOR TENUTO.  NEXT FOR ACCENT OR WEDGE
25300		IF(JSTEM.EQ.1)GO TO 305
25400		J5=1
25500		IF(J4.GT.9)GO TO 303
25600	306	IF(MOD(J4,2).NE.0)J5=J5*2
25700		GO TO 303
25800	305	J5=-1
25900		IF(J4.LT.5)GO TO 303
26000		GO TO 306
26100	304	IF(JSTEM.EQ.1)GO TO 302
26200		J5=1
26300		IF(J4.LT.9)J5=2
26400		GO TO 303
26500	C WHAT ABOUT IF NO LEDGER LINES?
26600	302	J5=-1
26700		IF(J4.GT.5)J5=-2
26800	303	J4=J4+J5
26900		R4=J4
27000		CALL CENTX
27100	301	J5=MRK
27200	C GET 2ND MARK
27300		MRK=0
27400		GO TO 100
27500		END
27600	
     

00100		SUBROUTINE YPOS(R,RY)
00200		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM
00300		COMMON R2,JA,CENTR,J2,RJQ(9),R12,R13 /STF/RSTFAC(0/7),RSTJ2
00400		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI
00500		RB=R+R13*7.
00600		IF(JSTEM.EQ.1)RB=-RB
00700	C 1=STEM UP, 2=STEM DOWN
00800		RY=RSTJ2
00900		IF(R12.NE.0)RY=RMINI
01000	C FOR NEW GENERAL SIZE FACTOR
01100		RY=CENTR+RB*RY
01200		END
01300	
01400		SUBROUTINE R4SET(R,S,T)
01500		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
01600		COMMON R2,JA,CENTR,J2,RJQ(20)
01700		EQUIVALENCE (R11,RJQ(9)),(R4,RJQ(2)),(R8,RJQ(6))
01800		Q=R
01900		IF(JSTEM.EQ.1)Q=S+R8
02000		R4=R4+Q
02100		IF(R4.LT.T)R4=T
02200		R4=R4+R11
02300	C R11=DISPLACEMENT  ****** CHECK THIS
02400		END
02500	
02600		SUBROUTINE MRKZ(JX,Y)
02700		COMMON/DAT/RACNT(69),RDOT(17),NXAC(7)
02800		COMMON R2,JA,CNTR,J2,RJQ(20),J3,J4,J5 /PLTR/IPLT,RHT,DIS,XDIS
02900		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,RB
03000		JT=0
03100		IF(IPLT.LT.0)JT=-2
03200	C JT IS FOR THICKENING WHEN PLOTTING
03300		JX1=JX+1
03400	43	CALL RDRAW(JX1,RACNT(JX),RACNT,RA,RX,Y,RB)
03500		IF(JT.EQ.0)RETURN
03600		JT=JT+1
03700		IF(J5.EQ.13)GO TO 42
03800		Y=Y-XDIS
03900		IF(J5.EQ.14)RX=RX-XDIS
04000	C 14=PLUS
04100		GO TO 43
04200	42	RB=RB+.03
04300	C INCREASE SIZE FOR THICKENING HARMONIC
04400		GO TO 43
04500		END
04600	
04700		SUBROUTINE TENUTO(Y)
04800	C**** TENUTO (DASH)  
04900		COMMON R2,JA,CNTR,J2,R3  /PLTR/IPLT,RHT,DIS,XDIS
05000		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX
05100		RX=R3+RMINI*14.
05200		CALL LINX(R3,Y,RX,Y)
05300		IF(IPLT.GE.0)RETURN
05400	C MAKE THICKER IF PLOTTING
05500		Y=Y-XDIS
05600		CALL LINX(R3,Y,RX,Y)
05700		END
     

00100	C******CODE 9 MARKS **********
00200	C 4=WDG, 5=ACCNT, 7 STACC, 9=TEN, 11=DNBOW, 12=UPBOW, 13=HARM, 14=+
00300	C 15=THESIS, 16=ARSIS, 17=MORD, 18= INVMORD, 20=TR, 21=Tb, 22=T#, 23=TNAT
00400	C 25=HVYWDG, 26=FERM, 27=TEN-STACC, 28=WDG-STACC, 29=ACCNT-STACC
00500	C 30-35=FINGERING, 21-23=MUSICA FICTA
00600		SUBROUTINE MRKX
00700		COMMON /INTGRS/JACC,JTAIL,JDOT,NTYPE,JSTEM,JWHOLE
00800		COMMON/DAT/RACNT(69),RDOT(17),NXAC(7)
00900		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /STF/RSTFAC(0/7),RSTJ2
01000		COMMON /PLTR/IPLT,RHT,DIS,XDIS /POSI/STFF(0/7),JJ2,POS
01100		COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
01200		1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ
01300		EQUIVALENCE (R3,RJQ(1)),(J5,JQ(3)),(R5,RJQ(3)),(R11,RJQ(9))
01400		1,(R4,RJQ(2)),(RLVL,RJQ(19)),(R6,RJQ(4)),(J11,JQ(9)),(J9,JQ(7))
01500		1,(R7,RJQ(5)),(R8,RJQ(6)),(R9,RJQ(7)),(J3,JQ(1)),(RX4,JQ(18))
01600		1,(ISTEM,JQ(20)),(J7,JQ(5))
01700	
01800		RMINI=RSTJ2
01900		RINV=1.
02000		IF(J5)2,21,101
02100	C GO BACK IF NO NUM. IN J5
02200	21	RETURN
02300	2	J5=-J5
02400		RINV=-RINV
02500	101	CALL NOZERO(R6)
02600		RMINI=RMINI*R6
02700		JSTEM=0
02800		ISTEM=0
02900		IF(IABS(J4).LT.80)GO TO 100
03000		R4=AMOD(R4,100.)
03100		RMINI=RMINI*.7
03200	100	IF(J5.GT.9)GO TO 10
03300		GO TO(1,1,1,4,5,26,7,5,9)J5
03400	10	IF(J5.GT.19)GO TO 200
03500		GO TO(11,11,11,11,11,11,17,17)J5-10
03600	200	IF(J5.GT.29)GO TO 30
03700		GO TO(20,20,20,20,5,25,26)J5-19
03800	
03900	C**** FICTA
04000	1	JACC=J5
04100		RLVL=R4
04200		CALL ACCI
04300		RETURN
04400	
04500	C**** WEDGE
04600	4	JX=5
04700		RX=R3+.5*RSTJ2
04800	C SHIFT A LITTLE TO RIGHT
04900	41	RA=RMINI
05000		RB=RA
05100		IF(RINV.LT.0)RA=-RA
05200	40	CALL MRKZ(JX,CENTR)
05300		RETURN
05400	
05500	C**** ACCENT
05600	5	JX=1
05700		RX=R3
05800		GO TO 41
05900	
06000	C**** STACCATO
06100	7	RX=R3+6.7*RMINI
06200	C PUSH DOT TO RIGHT
06300		RG=9.
06400		IF(IPLT.LT.0)RG=17.
06500	C DOESN'T FILL DOT ON DPY
06600		RB=14.
06700	77	CALL RDRAW(1,RG,RDOT,RMINI,RX,CENTR+RSTJ2,RMINI)
06800		RETURN
06900	
07000	C**** TENUTO (DASH)   (STARTS ABOVE)
07100	9	CALL TENUTO(CENTR)
07200		RETURN
07300	
07400	C*** UPBOW, ETC.
07500	11	JX=NXAC(J5-10)
07600		RA=RMINI
07700		RB=RA
07800		RX=R3
07900		GO TO 40
08000		
08100	C*** 17=MORDENT  18=INVERTED MORDENT
08200	17	RINV=J5
08300		GO TO 26
08400	
08500	C*** TRILL
08600	20	JA=7
08700		R5=0
08800		J7=1
08900		R7=1.
09000		R8=J5-20
09100	C R8 HAS THE ACCIDENTAL TO PUT OVER TR.
09200		CALL ALPHA
09300		RETURN
09400	
09500	C*** HEAVY WEDGE
09600	25	R7=0
09700		ISTEM=2
09800		IF(RINV.LT.0)ISTEM=1
09900		RX4=R4
10000		
10100	C*** FERMATA
10200	26	CALL FERMTA
10300		RETURN
10400	
10500	C*** FINGERING
10600	30	R5=J5-30
10700	C GET THE 1 DIGIT NUM.
10800	C  PRINTS ONLY NUMS 0→5 AS FINGERINGS OVER NOTES.
10900		RX=8.
11000	C 8. SETS POS. AS IF NUM.WERE UNDER NOTE WITH STEM UP.
11100		J3=R3+RX*RMINI
11200		R6=.7
11300		R7=0
11400		R8=0
11500		R9=0
11600		R4=R4+2.5
11700		CALL MAKNUM(R5)
11800	C ADD HERE FOR NUMS WITH ACCENTS, ETC.
11900		END